package github.javaguide.config;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

/**
 * RPCConfig类
 * @author shuang.kou
 * @createTime 2020年07月21日 20:23:00
 **/
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
@ToString
public class RpcServiceConfig {
    /**
     * service version 服务版本
     */
    private String version = "";
    /**
     * 当接口有多个实现类时，按组区分 组别
     */
    private String group = "";

    /**
     * target service 目标服务的实例
     */
    private Object service;

    /**
     * 服务名 ：服务名+组名+版本号
     * @return
     */
    public String getRpcServiceName() {
        return this.getServiceName() + this.getGroup() + this.getVersion();
    }

    /**
     * 获得实现的接口名
     * @return
     */
    public String getServiceName() {
        return this.service.getClass().getInterfaces()[0].getCanonicalName();
    }
}
